home *** CD-ROM | disk | FTP | other *** search
- public class FormHandlerComp extends ComponentApp {
- DAssetManager cam;
- DDrawFormButton cdp;
- int ImageID;
- int perlScriptID;
- String SubmitName;
- int SuccessURL;
- int ErrorURL;
- String outputFile;
- String UnixWindows;
- String PerlPath;
- String storageDir;
- String codeBase;
- static final int MAXASSET = 50;
- boolean published;
- boolean[] reqField;
- int reqFieldCount;
- int[] assetControl;
- int assetCount;
- int tAssetCount;
- int actionCGIAsset;
-
- public String PropertyListener(String var1, String var2, int var3, int var4, IDInspector var5) {
- if (var3 == 1) {
- if (var1.compareTo("Button Name") == 0) {
- return this.SubmitName;
- }
-
- if (var1.compareTo("Success URL") == 0) {
- return Integer.toString(this.SuccessURL);
- }
-
- if (var1.compareTo("Error URL") == 0) {
- return Integer.toString(this.ErrorURL);
- }
-
- if (var1.compareTo("Output File") == 0) {
- return this.outputFile;
- }
-
- if (var1.compareTo("Publish to") == 0) {
- if (this.UnixWindows.compareTo("Windows") == 0) {
- return "0";
- }
-
- if (this.UnixWindows.compareTo("Unix") == 0) {
- return "1";
- }
-
- if (this.UnixWindows.compareTo("Mac") == 0) {
- return "2";
- }
- } else if (var1.compareTo("Perl Path for Unix") == 0) {
- return this.PerlPath;
- }
-
- for(int var6 = 0; var6 < this.countElement(); ++var6) {
- if (var1.compareTo(this.getFieldName(var6)) == 0) {
- if (!this.reqField[var6]) {
- return "1";
- }
-
- return "0";
- }
- }
- } else {
- if (var1.compareTo("Button Name") == 0) {
- this.SubmitName = var2;
- this.cdp.setText(this.SubmitName);
- } else if (var1.compareTo("Success URL") == 0) {
- this.SuccessURL = Integer.parseInt(var2, 10);
- } else if (var1.compareTo("Error URL") == 0) {
- this.ErrorURL = Integer.parseInt(var2, 10);
- } else if (var1.compareTo("Output File") == 0) {
- this.outputFile = var2;
- } else if (var1.compareTo("Publish to") == 0) {
- if (var2.compareTo("0") == 0) {
- this.UnixWindows = "Windows";
- } else if (var2.compareTo("1") == 0) {
- this.UnixWindows = "Unix";
- } else {
- this.UnixWindows = "Mac";
- }
- } else if (var1.compareTo("Perl Path for Unix") == 0) {
- this.PerlPath = var2;
- }
-
- for(int var8 = 0; var8 < this.countElement(); ++var8) {
- if (var1.compareTo(this.getFieldName(var8)) == 0) {
- if (var2.compareTo("0") == 0) {
- this.reqField[var8] = true;
- } else {
- this.reqField[var8] = false;
- }
- }
- }
- }
-
- return "";
- }
-
- int max(int var1, int var2) {
- return var1 > var2 ? var1 : var2;
- }
-
- public void onCopy() {
- this.SubmitName = new String(this.SubmitName);
- this.outputFile = new String(this.outputFile);
- this.PerlPath = new String(this.PerlPath);
- this.storageDir = new String(this.storageDir);
- this.codeBase = new String(this.codeBase);
- boolean[] var1 = new boolean[this.reqFieldCount];
-
- for(int var2 = 0; var2 < this.reqFieldCount; ++var2) {
- var1[var2] = this.reqField[var2];
- }
-
- this.reqField = var1;
-
- for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
- this.cam.CopyAsset(this.assetControl[this.tAssetCount]);
- }
-
- }
-
- String cleanPath(String var1) {
- String var2 = new String(var1);
- String var3 = new String(var1);
- String var4 = new String(var1);
- var1.length();
- if (var2.substring(0, 3).compareTo("../") == 0) {
- var1 = "../" + var1;
- } else if (var3.substring(0, 7).compareTo("../html") == 0) {
- var1 = "../" + var1;
- } else if (var4.substring(0, 2).compareTo("./") == 0) {
- var1 = "../." + var1;
- }
-
- return var1;
- }
-
- int countElement() {
- IDLayout var1 = this.cdp.getLayout();
- int var2 = 1;
- int var4 = 0;
-
- while(true) {
- String var5 = new String() + var2;
- if (!var1.IsElementName(var5)) {
- --var2;
- if (this.reqField == null) {
- this.reqField = new boolean[var2];
-
- for(int var9 = 0; var9 < var2; ++var9) {
- this.reqField[var9] = false;
- }
-
- this.reqFieldCount = var2;
- return var2;
- } else {
- int var10 = this.min(this.reqFieldCount, var2);
- boolean[] var3 = this.reqField;
- this.reqField = new boolean[var2];
-
- for(var4 = 0; var4 < var10; ++var4) {
- this.reqField[var4] = var3[var4];
- }
-
- if (this.reqFieldCount != this.max(this.reqFieldCount, var2)) {
- while(var4 < this.max(this.reqFieldCount, var2)) {
- this.reqField[var4] = false;
- ++var4;
- }
- }
-
- this.reqFieldCount = var2;
- return var2;
- }
- }
-
- ++var2;
- }
- }
-
- String getFieldName(int var1) {
- int var2 = var1 + 1;
- return "Required field " + var2;
- }
-
- public String onInstall(DAssetManager var1, String var2) {
- this.cam = var1;
- this.codeBase = var2;
- return "Form Handler";
- }
-
- protected void finalize() {
- if (this.published) {
- for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
- this.cam.RemoveAsset(this.assetControl[this.tAssetCount]);
- }
- }
-
- }
-
- public void onPublish(DAssetManager var1, int var2) {
- IDLayout var3 = this.cdp.getLayout();
- this.countElement();
- DFile var4 = new DFile();
- DFile var5 = new DFile();
- DFile var6 = new DFile();
- String var7 = this.codeBase;
- String var8 = var6.GetPathChar();
- new DMessageBox();
- if (this.published) {
- for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
- this.cam.RemoveAsset(this.assetControl[this.tAssetCount]);
- }
- }
-
- this.assetCount = 0;
- this.published = true;
- this.cdp.setHTMLBefore(this.getHiddenInsert(var2));
- if (this.UnixWindows.compareTo("Windows") == 0) {
- this.actionCGIAsset = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin-NT" + var8 + "Forms-Handler.cgi", "CGI\u0000", "assets" + var8 + "cgi-bin");
- this.assetControl[this.assetCount] = this.actionCGIAsset;
- this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
- this.assetControl[this.assetCount] = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin-NT" + var8 + "Buf.dll", "CGI\u0000", "assets" + var8 + "cgi-bin");
- this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
- }
-
- if (this.UnixWindows.compareTo("Mac") == 0) {
- this.actionCGIAsset = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin-mac" + var8 + "Forms-Handler.cgi", "CGI\u0000", "assets" + var8 + "cgi-bin");
- this.assetControl[this.assetCount] = this.actionCGIAsset;
- this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
- this.assetControl[this.assetCount] = this.cam.AddAsset("assets" + var8 + "webdata" + var8 + "", "SubDir\u0000", "");
- this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 451);
- } else {
- this.assetControl[this.assetCount] = this.cam.AddAsset("assets" + var8 + "webdata" + var8 + "", "SubDir\u0000", "");
- this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 451);
- var5.Open(var7 + "Forms" + var8 + "cgi-bin-Unix" + var8 + "Forms-Handler.cgi", 0);
- var4.Open(var7 + "Forms" + var8 + "cgi-bin" + var8 + "Forms-Handler.cgi", 4097);
- var4.WriteString("#!" + this.PerlPath + "\n", -1);
- var4.WriteString("$STORAGEDIR=\"" + this.storageDir + "\";", -1);
- var4.WriteString(var5.ReadString(10000), -1);
- var4.Close();
- var5.Close();
- this.actionCGIAsset = this.cam.AddAsset(var7 + "Forms" + var8 + "cgi-bin" + var8 + "Forms-Handler.cgi", "CGI\u0000", "assets" + var8 + "cgi-bin");
- this.assetControl[this.assetCount] = this.actionCGIAsset;
- this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
- }
-
- String var9 = this.cam.GetAssetRelativeLocation(this.actionCGIAsset, var2, 0);
- var3.setFormAction(var9);
- }
-
- public void onDrop(IDLayout var1, IDRect var2, int var3) {
- if (var3 == 1) {
- this.assetControl = new int[50];
- int var4 = 0;
-
- do {
- this.assetControl[var4] = 0;
- ++var4;
- } while(var4 < 50);
-
- new DFile();
- this.SubmitName = "Submit";
- this.outputFile = "webinfo";
- this.UnixWindows = "Windows";
- this.PerlPath = "/usr/local/bin/perl";
- this.storageDir = "../webdata/";
- this.cdp = new DDrawFormButton();
- this.cdp.setText(this.SubmitName);
- var1.AddObject(this.cdp);
- this.cdp.SetPositionRect(var2.getLeft(), var2.getTop(), var2.getRight(), var2.getBottom());
- }
- }
-
- int min(int var1, int var2) {
- return var1 < var2 ? var1 : var2;
- }
-
- public void onInspect(CStringArray var1, CStringArray var2) {
- var1.Set("Button Name");
- var2.Set("String\u0000");
- var1.Set("Success URL");
- var2.Set("Link\u0000");
- var1.Set("Error URL");
- var2.Set("Link\u0000");
- var1.Set("Output File");
- var2.Set("String\u0000");
- var1.Set("Publish to");
- var2.Set("Set(Windows|Unix|Mac)");
- var1.Set("Perl Path for Unix");
- var2.Set("String\u0000");
- int var3 = this.countElement();
-
- for(int var4 = 0; var4 < var3; ++var4) {
- var1.Set(this.getFieldName(var4));
- var2.Set("Set(True|False)");
- }
-
- }
-
- String getHiddenInsert(int var1) {
- String var2 = "<INPUT TYPE=\"HIDDEN\" NAME=\"success\" VALUE=\"" + this.cleanPath(this.cam.GetAssetLocation(this.SuccessURL, var1, 1)) + "\">\n";
- var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"error\" VALUE=\"" + this.cleanPath(this.cam.GetAssetLocation(this.ErrorURL, var1, 1)) + "\">\n";
- var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"fields\" VALUE=\"" + this.reqFieldCount + "\">\n";
- var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"filename\" VALUE=\"" + this.outputFile + "\">\n";
-
- for(int var4 = 0; var4 < this.reqFieldCount; ++var4) {
- if (this.reqField[var4]) {
- int var3 = var4 + 1;
- var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"" + var3 + "a\" VALUE=\"TRUE\">\n";
- }
- }
-
- return var2;
- }
- }
-